package com.cn.boot.student.mapper;

import com.cn.boot.student.entity.TeamEntity;
import com.cn.boot.student.entity.UserEntity;

import java.util.List;

/**
 * 小组管理数据持久层
 * @author luosir
 */
public interface TeamMapper {
    /**
     * 得到小组总数
     * @param teamEntity
     * @return
     */
    Integer getCount(TeamEntity teamEntity);

    /**
     * 小组列表,分页，条件查询
     * @param teamEntity
     * @return
     */
    List<TeamEntity> findAll(TeamEntity teamEntity);

    /**
     * 查询小组是否存在
     * @param teamName
     * @return
     */
    List<TeamEntity> teamIsExist(String teamName);

    /**
     * 小组添加
     * @param teamEntity
     * @return
     */
    Integer add(TeamEntity teamEntity);

    Integer update(TeamEntity teamEntity);

    Integer del(Integer id);

    TeamEntity findById(Integer id);

    /**
     * 得到所有角色为教练的名字
     * @return
     */
    List<UserEntity> findAllCoach();

    /**
     * 得到所有角色为组长的名字
     * @return
     */
    List<UserEntity> findAllLeader();

    /**+
     * 根据教练名字查询教练、组长的id
     * @param coach
     * @return
     */
    Integer getCoachAndLeaderId(String coach);

    List<TeamEntity> findAllCoachName();

    List<TeamEntity> findAllLeaderName();

    /**
     * 得到未分配小组的学员
     * @return
     */
    List<UserEntity> getNoAssignStudent(TeamEntity teamEntity);

    /**
     * 得到已经分配小组的学员
     * @return
     */
    List<UserEntity> getIsAssignStudent(TeamEntity teamEntity);

    /**
     * 得到已经分配小组的学员得数量
     * @param teamEntity
     * @return
     */
    Integer getIsAssignStudentCount(TeamEntity teamEntity);

    /**
     * 得到未分配小组的学员得数量
     * @param teamEntity
     * @return
     */
    Integer getNoAssignStudentCount(TeamEntity teamEntity);

    Integer getMaxTeamId();
}
